package com.lhnstart.learn.bases.innerclass;

import java.security.PublicKey;

/**
 * 演示局部内部类的使用
 *
 * @author lhn
 * @date 2023/07/17 21:20
 * @since 1.0.0
 **/
public class LocalInnerClass {

    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        Class <Outer02> outer02Class = Outer02.class;
        Outer02 outer02 = outer02Class.newInstance();
        outer02.m1();
    }

}

class Outer02 { // 外部类
    private int n1 = 100;

    private void m2() {
        System.out.println("私有方法!");
    }

    // 方法
    public void m1() {
        // 局部内部类是定义在外部类的局部位置, 通常在方法
        // 不能添加访问修饰符, 但是可以使用 final 修饰
          class Inner02 { // 局部内部类(本质仍然是一个类)
            private int n1 = 800;
            public void f1() {
                // 可以直接访问外部类的所有成员, 包含私有的
                System.out.println("n1=" + Outer02.this.n1);
                m2();
            }
        }
        Inner02 inner02 = new Inner02();
        inner02.f1();
    }
}